package com.cetool.autocms.mapper.sys;

import com.cetool.autocms.pojo.domain.sys.ChildMenuListDO;
import com.cetool.autocms.pojo.domain.sys.MenuInfoDO;
import com.cetool.autocms.pojo.domain.sys.TopMenuListDO;
import com.cetool.autocms.pojo.param.sys.BatchDeleteMenuParam;
import com.cetool.autocms.pojo.param.sys.QueryMenuListParam;
import com.cetool.autocms.pojo.param.sys.QueryRoleMenuListParam;
import com.cetool.autocms.pojo.param.sys.SaveMenuParam;

import java.util.List;

/**
 * 菜单管理持久层
 *
 * @author 戴越
 * @date 2021/11/24
 */
public interface MenuMapper {

    /**
     * 查询菜单列表
     *
     * @param param 分页查询菜单列表请求实体
     * @return 菜单信息对象
     * @author 戴越
     * @date 2021/11/24
     */
    List<MenuInfoDO> getMenuInfoList(QueryMenuListParam param);

    /**
     * 新增菜单
     *
     * @param param 新增菜单请求实体
     * @return void
     * @author 戴越
     * @date 2021/11/24
     */
    void saveMenu(SaveMenuParam param);

    /**
     * 查询一级菜单列表
     *
     * @return 一级菜单对象
     * @author 戴越
     * @date 2021/11/24
     */
    List<TopMenuListDO> queryTopMenuList();

    /**
     * 查询所有菜单
     *
     * @return 菜单信息对象
     * @author 戴越
     * @date 2021/11/25
     */
    List<MenuInfoDO> getAllMenuList();

    /**
     * 批量删除菜单
     *
     * @param param 批量删除菜单请求实体
     * @return void
     * @author 戴越
     * @date 2021/11/25
     */
    void batchDeleteMenu(BatchDeleteMenuParam param);

    /**
     * 查询角色菜单列表
     *
     * @param param 查询角色菜单列表请求实体
     * @return 角色菜单列表信息对象
     * @author 戴越
     * @date 2021/12/2
     */
    List<ChildMenuListDO> getRoleMenu(QueryRoleMenuListParam param);

}
